﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using System.Threading;

/// <summary>
/// Modificada integramente por Mauri
/// </summary>
public partial class CronogramaMostrar : System.Web.UI.Page
{

    private static App_Negocio.Evento evento=null;
        
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            
            this.precargar();
            
            
        }
    }
    
    protected void precargar()
    {
        evento = new App_Negocio.Evento();
        evento.Id = int.Parse(Session["EventoId"].ToString());
        DataTable dt = evento.buscarEvento();
        evento.CantPersonas = int.Parse(dt.Rows[0]["CantPersonas"].ToString());
        lblEvento.Text = "" + evento.Id;
        lblFecha.Text = DateTime.Parse(dt.Rows[0]["Fecha"].ToString()).ToShortDateString();
        lblHora.Text = DateTime.Parse(dt.Rows[0]["HoraInicio"].ToString()).ToShortTimeString();
        //DateTime.hora = DateTime.Parse(dt.Rows[0]["HoraInicio"].ToString()).ToShortTimeString();
        //lblHora.Text = hora.ToShortDateString();
        lblNombre.Text = dt.Rows[0]["Nombre"].ToString();
        lblTipoEvento.Text = dt.Rows[0]["TipoEve"].ToString();
        lblSalon.Text = dt.Rows[0]["NomSalon"].ToString();

        this.cargarGrilla(evento.Id);

        btnSimulacion.Enabled = false;

        //List<CronogramaGui> lista = (List<CronogramaGui>)Session["CronoLista"];
        //tbxDescripcion.Text = lista.ElementAt<CronogramaGui>(0).Descripcion;
    }

        
    private class CronogramaGui
    {
        DateTime hora;

        public DateTime Hora
        {
            get { return hora; }
            set { hora = value; }
        }
        private string nombre;

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        private string descripcion;

        public string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }

        public CronogramaGui(App_Negocio.Cronograma cron)
        {
            this.Nombre = cron.Actividad.Nombre;

            this.hora = cron.FechayHora;
            this.descripcion = cron.Observacion;
        }
    }
    
    protected void cargarGrilla(int idEvento){

        List<CronogramaGui> lista = new List<CronogramaGui>();
        lista = this.cargarGrillaActividades(idEvento);
        Session["CronoLista"] = lista;
        gvActividades.DataSource = lista;
        gvActividades.DataBind();

    
    }

    private List<CronogramaGui> cargarGrillaActividades(int idEvento)
    {
        List<CronogramaGui> lista = new List<CronogramaGui>();
        DataTable dataTable = App_Negocio.Cronograma.listarCronogramaTabla(idEvento);
        App_Negocio.Cronograma cron = new App_Negocio.Cronograma();
        CronogramaGui gui = null;
        foreach (DataRow dr in dataTable.Rows)
        {
            cron = new App_Negocio.Cronograma();
            cron.FechayHora = DateTime.Parse(dr["FechaYHora"].ToString());
            cron.Observacion = dr["Observacion"].ToString();
            App_Negocio.Actividad act = new App_Negocio.Actividad();
            act.Nombre = dr["actNombre"].ToString();
            cron.Actividad = act;

            gui = new CronogramaGui(cron);
            lista.Add(gui);
        }

        return lista;
    }

    protected void gvActividades_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
    { }

    
    protected void tmrCronometro_Tick(object sender, EventArgs e)
    {
        if (!termino)
        {
            btnSimulacion.Enabled = true;
            float porcentajeActual = evento.consultarPorcentajeInvitadosLlegados();
            if (porcentajeActual >= porcentajeObjetivo)
            {
                btnAlertaActividad.Text = "Ha LLegado el " + porcentajeObjetivo + "% de los invitados";
                tmrCronometro.Enabled = false;

            }
            else
            {
                btnAlertaActividad.Text = animacionIzquierda() + porcentajeActual + " %" + animacionDerecha();
            }
        }
        else
        {
            
        }
    }
    private static int idAnimacionD = 1;
    private static int idAnimacionI = 1;
    private static float porcentajeObjetivo = 80;
    

    private string animacionDerecha()
    {
        string texto = "";
        switch (idAnimacionD)
        {
            case 1:
                texto = ".  ";
                idAnimacionD++;
                break;
            case 2:
                texto = ".. ";
                idAnimacionD++;
                break;
            case 3:
                texto = "...";
                idAnimacionD++;
                break;
            case 4:
                texto = "   ";
                idAnimacionD = 1;
                break;
        }
        return texto;
    }

    private string animacionIzquierda()
    {
        string texto = "";
        switch (idAnimacionD)
        {
            case 1:
                texto = "  .";
                idAnimacionI++;
                break;
            case 2:
                texto = " ..";
                idAnimacionI++;
                break;
            case 3:
                texto = "...";
                idAnimacionI++;
                break;
            case 4:
                texto = "   ";
                idAnimacionI = 1;
                break;
        }
        return texto;
    }


    private static int mostrar=0;
    private static bool termino = false;


    protected void btnAlertaActividad_Click(object sender, EventArgs e)
    {
        List<CronogramaGui> lista = (List<CronogramaGui>)Session["CronoLista"];
        if (termino == false)
        {
            //if (lista.Count > mostrar)
            
            
            if (lista.Count > mostrar)
            {
                btnAlertaActividad.Text = "Ejecutando: " + lista.ElementAt<CronogramaGui>(mostrar).Descripcion;
                tbxDescripcion.Text = lista.ElementAt<CronogramaGui>(mostrar).Descripcion;
                mostrar++;
            }
            else
            {
                termino = true;
                
            }
        }
        else
        {
            btnAlertaActividad.Text = "Fin del Evento";
            btnSimulacion.Enabled = false;
        }
    }
    protected void btnSalir1_Click(object sender, EventArgs e)
    {
        Response.Redirect("Principal_Empleados.aspx");
    }
}
